<?php

/*********** 3.8 从字符串中解析日期和时间 ****************/

// 问题：需要将一个字符串中的日期或时间转换为可以在计算中使用的格式。
// 如 将 “last thursday” 或 “February 9,2004” 的日期表达式
// 转换为一个纪元时间戳

// 解决方案

// 解析一个任意格式的日期或时间字符串，用 strtotime()

// 默认当前年份
$a = strtotime('march 10');

$b = strtotime('last thursday');

$c = strtotime('now + 3 months');

//var_dump($a, $b, $c);
//int(1583769600)
//int(1606320000)
//int(1614555126)

/******************************************************
 * 函数 strtotime() 能理解有关当前时间的单词
 */

$a = strtotime('now');
$a = date(DATE_RFC850, $a);
$b = strtotime('today');
$b = date(DATE_RFC850, $b);
//var_dump($a, $b);
//string(31) "Tuesday, 01-Dec-20 07:35:36 CST"
//string(31) "Tuesday, 01-Dec-20 00:00:00 CST"

/******************************************************
 * 还能理解 标识时间和日期的不同方式
 */

$a = strtotime('5/12/2024');
$a = date(DATE_RFC850, $a);

$b = strtotime('12 may 2024');
$b = date(DATE_RFC850, $b);
//var_dump($a, $b);
//string(30) "Sunday, 12-May-24 00:00:00 CST"
//string(30) "Sunday, 12-May-24 00:00:00 CST"

/******************************************************
 * 还能理解 相对时间和日期
 */

$a = strtotime('last thursday');
$a = date(DATE_RFC850, $a);
$b = strtotime('2015-07-12 2pm + 1 month');
$b = date(DATE_RFC850, $b);
//var_dump($a, $b);
//string(32) "Thursday, 26-Nov-20 00:00:00 CST"
//string(33) "Wednesday, 12-Aug-15 14:00:00 CST"

/******************************************************
 * 还 了解时区
 */


date_default_timezone_set('America/New_York');
$a = strtotime('2020-11-30 2am America/New_York + 1 month');
$a = date(DATE_RFC850, $a);
date_default_timezone_set('America/New_York');
$a = strtotime('2020-11-30 2am America/Denver + 1 month');
$b = date(DATE_RFC850, $b);

/********
 * 可以与 DateTime 对象 一起配合使用
 */
